# 导入seleium的webdriver接口
from selenium import webdriver
import time
import pandas as pd
# 封装成一个方法,每调用一次就获取一页
def get_one_page_data(name_list,prices_list,shop_list,flags_list,numbers_list):
    # 将下拉框拉到最底部
    web.execute_script('window.scrollTo(0,document.body.scrollHeight)')
    time.sleep(2)
    # 获取商品列表
    li_list = web.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li')  # 获取每个标签文本内容
    for li in li_list:
        print("====================================================================")
        price = li.find_element_by_xpath('./div/div[@class="p-price"]').text
        prices_list.append(price)
        name = li.find_element_by_xpath('./div/div[@class="p-name p-name-type-2"]').text
        name_list.append(name)
        numbers = li.find_element_by_xpath('./div/div[@class="p-commit"]').text
        numbers_list.append(numbers)
        shopName = li.find_element_by_xpath('./div/div[@class="p-shop"]').text
        shop_list.append(shopName)
        iconsName = li.find_element_by_xpath('./div/div[@class="p-icons"]').text
        if iconsName=='' or iconsName is None:
            flags_list.append("无")
        else:
            flags_list.append(iconsName)
        # python的拼接
        print(f"商品名称：{name}\t商品价格：{price}\t商品评价数：{numbers}\t商品店铺名：{shopName}\t商品标签：{iconsName}\t")
    # 这只是获取一页，获取所有的，就要获取下一页的点的标志

if __name__ == '__main__':
    # 创建浏览器对象--此时浏览器打开
    web = webdriver.Chrome()
    # 页面最大化
    web.maximize_window()
    # 输入百度地址并确认
    web.get('https://www.jd.com/')
    # 返回输入对象
    shuru = web.find_element_by_xpath('//*[@id="key"]')
    shuru.send_keys("电脑")
    # 匹配搜素按钮并且点击
    web.find_element_by_xpath('//*[@id="search"]/div/div[2]/button/i').click()  # click是点击
    # 让数据加载完再进行拉取,拉到最底部


    #存储每个商品的价格
    prices_list=[]
    # 存储每个商品的名称
    name_list = []
    # 存储每个商品的评价
    numbers_list = []
    # 存储每个商品的店铺
    shop_list = []
    # 存储每个商品的标签分类
    flags_list = []

    time.sleep(3)
    #第一页肯定有数据
    get_one_page_data(name_list,prices_list,shop_list,flags_list,numbers_list)


    while True:
        #获取下一页标签
        next_flag = web.find_element_by_xpath('//div[@id="J_bottomPage"]/span/a[last()]')
        if str(next_flag.get_attribute("class")) == "pn-next":
            # get_attribute()可以获取标签的属性值
            #点击下一页
            next_flag.click()
            #获取下一页数据
            get_one_page_data(name_list,prices_list,shop_list,flags_list,numbers_list)
        else:
            #这就达到了最后一页
            print("------======------")
            print("这是最后一页！")
            break
    info_dict={
        "商品名称":name_list,
        "商品价格": prices_list,
        "商品店铺": shop_list,
        "商品分类": flags_list,
        "商品评价": numbers_list
    }
    df1=pd.DataFrame(info_dict)
    df1.to_csv("京东电脑数据.csv",index=False)

    time.sleep(1)
    # 关闭浏览器
    web.quit()